package fr.skolian.utils.capture.command
{
	import flash.system.Capabilities;
	
	import fr.skolian.core.command.AbstractCommand;
	import fr.skolian.core.command.CommandEvent;
	import fr.skolian.core.interfaces.ICommand;
	import fr.skolian.utils.capture.core.BoxCutter;
	import fr.skolian.utils.capture.core.Capture;
	import fr.skolian.utils.log.Log;
	import fr.skolian.utils.process.event.ProcessEvent;
	
	
/*Skolian - Content management system for primary school - Copyright (c) 2011 - Olivier Gianotti - This file is part of Skolian. Skolian is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Skolian is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Skolian.  If not, see <http://www.gnu.org/licenses/>.
contact : ogianotti@gmail.com 

Skolian - Application de gestion de contenus pédagogiques en école primaire. Copyright (C) 2011 - Olivier Gianotti - Ce fichier est une partie de Skolian. Skolian est un logiciel libre ; vous pouvez le redistribuer et/ou le modifier au titre des clauses de la Licence Publique Générale GNU, telle que publiée par la Free Software Foundation ; soit la version 2 de la Licence, ou (à votre discrétion) une version ultérieure quelconque. Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ; sans même une garantie implicite de COMMERCIABILITE ou DE CONFORMITE A UNE UTILISATION PARTICULIERE. Voir la Licence Publique Générale GNU pour plus de détails. Vous devriez avoir reçu un exemplaire de la Licence Publique Générale GNU avec ce programme ; si ce n'est pas le cas, consultez <http://www.gnu.org/licenses/>.
contact : ogianotti@gmail.com 
*/

public class GetCapture extends AbstractCommand implements ICommand
	{
		private var _boxcutter:BoxCutter;
		private var _capture:Capture;
		private var _fileName:String;
		private var _fullScreen:Boolean;
		
		public function GetCapture(fileName:String=null,fullScreen:Boolean=false)
		{
			super();
			_boxcutter = new BoxCutter();
			_capture = new Capture();
			_boxcutter.addEventListener(ProcessEvent.FINISH,onComplete);
			_capture.addEventListener(ProcessEvent.FINISH,onComplete);
			_fileName = fileName;
			_fullScreen = fullScreen;
		}
		
		public function get fileName():String
		{
			return _fileName;
		}

		public function set fileName(value:String):void
		{
			_fileName = value;
		}

		private function onComplete(event:ProcessEvent):void{
			_boxcutter.kill();
			_capture.kill();
			dispatchEvent(new CommandEvent(CommandEvent.COMPLETE));
		}
		
		public function execute():void
		{
			Log.log("_fileName "+_fileName+", _fullScreen : "+_fullScreen);
			if(Capabilities.os.toLocaleLowerCase().indexOf("win")>-1)_boxcutter.execute(_fileName,_fullScreen);
			else _capture.execute(_fileName,_fullScreen);
		}
	}
}